// 前端API调试工具
import api from './index';
// eslint-disable-next-line no-unused-vars
import Logger from '../utils/logger';

/**
 * 检查API连接和认证状态
 * @returns {Promise} - 返回一个Promise对象，包含API连接信息
 */
export const checkApiStatus = async () => {
  try {
    // 获取基本API状态
    const statusResponse = await api.get('/auth/status');
    
    // 尝试获取调试信息（无需认证）
    let authStatus = null;
    try {
      authStatus = await api.get('/debug/auth-status');
    } catch (error) {
      // 获取认证状态失败，静默处理
    }
    
    // 尝试调用受保护的资源（需要认证）
    let authResult = null;
    try {
      authResult = await api.get('/debug/verify-auth');
    } catch (error) {
      // 认证验证失败，静默处理
    }
    
    return {
      apiBasicStatus: statusResponse || { error: '无法获取基本API状态' },
      authStatus: authStatus || { error: '无法获取认证状态信息' },
      authVerifyResult: authResult || { error: '认证验证失败' },
      token: localStorage.getItem('token') || '未找到token',
      tokenInfo: parseJwt(localStorage.getItem('token'))
    };
  } catch (error) {
    return {
      error: `API状态检查失败: ${error.message}`,
      details: error
    };
  }
};

/**
 * 解析JWT token（不验证签名）
 * @param {string} token - JWT token字符串
 * @returns {Object|null} - 解析后的token payload或null
 */
export const parseJwt = (token) => {
  if (!token) return null;
  
  // 如果token带有Bearer前缀，去掉前缀
  if (token.startsWith('Bearer ')) {
    token = token.substring(7);
  }
  
  try {
    // 分割token并解码payload部分
    const base64Url = token.split('.')[1];
    const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
    const payload = JSON.parse(window.atob(base64));
    
    // 计算过期状态
    if (payload.exp) {
      const expiryDate = new Date(payload.exp * 1000);
      payload.expiresAt = expiryDate.toLocaleString();
      payload.isExpired = expiryDate < new Date();
      payload.timeToExpiry = Math.floor((expiryDate - new Date()) / 1000);
    }
    
    return payload;
  } catch (error) {
    return {
      error: `JWT解析失败: ${error.message}`,
      token: token.substring(0, 20) + '...' // 只显示token的一部分
    };
  }
};
